What is @codemirror/lang-xml?
@codemirror/lang-xml is a language support package for CodeMirror 6 that provides syntax highlighting, parsing, and other language-related features for XML. It is designed to be used with the CodeMirror 6 editor to enhance the editing experience for XML documents.
What are @codemirror/lang-xml's main functionalities?
Syntax Highlighting
This code sets up a CodeMirror editor with XML syntax highlighting. The `xml` function from `@codemirror/lang-xml` is used as an extension to provide the necessary syntax highlighting for XML content.
import { xml } from '@codemirror/lang-xml';
import { EditorState } from '@codemirror/state';
import { EditorView, basicSetup } from '@codemirror/basic-setup';
const state = EditorState.create({
doc: '<note><to>Tove</to><from>Jani</from><heading>Reminder</heading><body>Don't forget me this weekend!</body></note>',
extensions: [basicSetup, xml()]
});
const view = new EditorView({
state,
parent: document.body
});
XML Parsing
This code demonstrates how to parse an XML document using the `@codemirror/lang-xml` package. The `syntaxTree` function is used to get the syntax tree of the XML document, which can be used for further analysis or manipulation.
import { xml } from '@codemirror/lang-xml';
import { syntaxTree } from '@codemirror/language';
import { EditorState } from '@codemirror/state';
const state = EditorState.create({
doc: '<note><to>Tove</to><from>Jani</from><heading>Reminder</heading><body>Don't forget me this weekend!</body></note>',
extensions: [xml()]
});
const tree = syntaxTree(state);
console.log(tree);
Other packages similar to @codemirror/lang-xml
monaco-editor
The `monaco-editor` package is the code editor that powers Visual Studio Code. It provides extensive language support, including XML. While it offers similar features like syntax highlighting and parsing, it is a different editor framework compared to CodeMirror.
ace-builds
The `ace-builds` package is a standalone code editor similar to CodeMirror. It supports XML syntax highlighting and parsing. Ace is known for its performance and extensive language support, but it is a different editor framework from CodeMirror.
@codemirror/lang-xml
[ WEBSITE | ISSUES | FORUM | CHANGELOG ]
This package implements XML language support for the
CodeMirror code editor.
The project page has more information, a
number of examples and the
documentation.
This code is released under an
MIT license.
We aim to be an inclusive, welcoming community. To make that explicit,
we have a code of
conduct that applies
to communication around the project.
API Reference
-
xml(conf?: Object = {}) → LanguageSupport
XML language support. Includes schema-based autocompletion when
configured.
-
conf
-
elements?: readonly ElementSpec[]
Provide a schema to create completions from.
-
attributes?: readonly AttrSpec[]
Supporting attribute descriptions for the schema specified in
elements
.
-
autoCloseTags?: boolean
Determines whether autoCloseTags
is included in the support extensions. Defaults to true.
-
xmlLanguage: LRLanguage
A language provider based on the Lezer XML
parser, extended with
highlighting and indentation information.
-
Describes an element in your XML document schema.
-
name: string
The element name.
-
children?: readonly string[]
Allowed children in this element. When not given, all elements
are allowed inside it.
-
textContent?: readonly string[]
When given, allows users to complete the given content strings
as plain text when at the start of the element.
-
top?: boolean
Whether this element may appear at the top of the document.
-
attributes?: readonly (string | AttrSpec)[]
Allowed attributes in this element. Strings refer to attributes
specified in XMLConfig.attrs
, but
you can also provide one-off attribute
specs. Attributes marked as
global
are allowed in every
element, and don't have to be mentioned here.
-
completion?: Partial<Completion>
Can be provided to add extra fields to the
completion object created for this
element.
-
Describes an attribute in your XML schema.
-
name: string
The attribute name.
-
values?: readonly (string | Completion)[]
Pre-defined values to complete for this attribute.
-
global?: boolean
When true
, this attribute can be added to all elements.
-
completion?: Partial<Completion>
Provides extra fields to the
completion object created for this
element
-
completeFromSchema(eltSpecs: readonly ElementSpec[], attrSpecs: readonly AttrSpec[]) → CompletionSource
Create a completion source for the given schema.
-
autoCloseTags: Extension
Extension that will automatically insert close tags when a >
or
/
is typed.